#! /usr/bin/env/python3
# coding:UTF-8
'''
    作者：王楠
    版本: 2.0
    日期：2020/02/28
    功能：输入年月日，判断是这一年的第几天
         模块化，tuple 改成list不一样的实现
'''
import datetime


def days_of_month(year):
    '''
        函数：判断是否是润年，输出,返回这一年每月的天数list
    '''
    days_of_month = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
    # is_leap = False
    if (year % 400 == 0) or ((year % 4 == 0) and (year % 100 != 0)):
        # is_leap = True
        days_of_month[1] = 29
        print('{}年是润年'.format(year))
    else:
        print('{}年不是润年'.format(year))
    return days_of_month


def input_date(input_date_str):
    input_date = datetime.datetime.strptime(input_date_str, '%Y/%m/%d')
    # print(input_date)
    year = input_date.year
    month = input_date.month
    day = input_date.day
    return {'year': year, 'month': month, 'day': day}


def which_day():
    '''
        主函数
    '''
    input_date_str = input('<判断第几天工具，退出请输入：Q>\n请输入日期（yyy/mm/dd）：')
    while input_date_str != 'Q':
        date_dict = input_date(input_date_str)
        # print(date_dict)
        days_month = days_of_month(date_dict['year'])
        # 计算整月的天数
        days_num_month = sum(days_month[:date_dict['month'] - 1])
        print('这是{}年的第{}天'.format(date_dict['year'],
                                  days_num_month + date_dict['day']))
        print('***************************')
        input_date_str = input('<判断第几天工具，退出请输入：Q>\n请输入日期（yyy/mm/dd）：')
        # 输出退出提示
        if input_date_str == 'Q':
            print('工具退出')


if __name__ == '__main__':
    which_day()
